local desc_quUnion = [[
  # 双城之战简介
  ___

  规则：游戏固定八人局且身份只为忠反，两方各有一个主城，一方主城先进入濒死则另一方胜利，
  
  身份固定顺序为：1忠（主城AI）-2忠-3反-4反-5反（主城AI）-6忠-7忠-8反。

  从第二轮开始每个玩家依次进入商店可以购买物品。

  每当玩家死亡，其获得X个“整备”标记，每个回合结束此标记-1.当标记为0时，该玩家复活并摸5张牌。（X初始为2，每两轮X+1）

  将池：巅峰神塔白名单随机抽选56个武将，从2号开始按顺序选将。选将前先禁其中1个武将。选将时从中随机获取8个武将选择。



  玩家技能（标记）：

  天赋（技能）：锁定技。以下情形达成效果+获得对应标记值：
  1.使用【杀】造成伤害。
  2.出牌阶段【杀】次数。
  3.摸牌阶段摸牌数与手牌上限。
  4.体力上限。
  5.锦囊造成伤害。
  6.每回合开始获得护甲。

  金币/等级/经验（标记）：

  金币：当你是非主城的敌对角色死亡的伤害来源时，你会获得一定金币数以及该角色身上的【赏金】。一名玩家结束获得少额的金币。
  
  等级/经验:每当对非主城的敌对角色造成伤害会获得对应经验，当满足下一经验数值时就能升级并选择增强天赋的某个效果
  （在商店能够以更低价格购买该效果更多的标记数值），一名玩家结束获得少额的经验。



  主城技能：
  
  1.固城：锁定技。游戏开始你获得4个“城防”标记和等量护甲，每两轮该标记-1直到为0。你跳过回合内所有阶段。
  
  每个回合结束时，你丢掉所有手牌并摸2*X张牌（X为“城防标记”）。

  2.箭塔：锁定技。距离1的友方（若自己有“城防”标记）受到【杀】指向目标时，
  
  若伤害来源不是友方且不是敌方主城，则你视为对其使用【杀】（每轮限两次）。

  3.危城:锁定技。当你使用牌造成伤害时，若你的体力值为最大体力一半以上则造成伤害+1。若你受到其他人使用牌造成伤害时，
  
  若你的体力值为最大体力一半及以下受到伤害+1。当你进入濒死状态直接死亡游戏结束。



  卡组：巅峰神塔白名单卡组。移除【诸葛连弩】。

  胜利条件：击败敌对主城。

  失败条件：我方主城进入濒死。或自由选将不在随机抽选56个武将中

]]

local quUnion_test = false  --开启测试可以自由选将·
local whilecards = {"standard","standard_cards","maneuvering","lang_cards","tenyear_token"} --白名单卡组

local initgold = 5 --初始金币
local defeatgold = math.floor(math.random(50,60)+0.5) --击杀敌人获得金币

local expcfg = {0,5,15,30,50,80} --下一等级所需经验
local drawbyground = 3 --重生后摸牌数按照每x轮额外多模4+当前轮数/3
--玩家天赋标记
local player_allmarks={"@gold_num","@qy_exp","@slash-dmg","@trick-dmg","@draw-max","@max-hp","@slash-num","@shield-num"}
--升级后可选升级选项
local qy_shopUpItems={"up_@slash-dmg","up_@trick-dmg","up_@draw-max","up_@max-hp","up_@slash-num","up_@shield-num"}
--升级选项后其在商店的加成价格
local qy_itemsGoldCfg = {["shop_@slash-dmg"]={name="@slash-dmg",price={60,100,150,210,270}},["shop_@trick-dmg"]={name="@trick-dmg",price={40,60,110,150,200}},["shop_@draw-max"]={name="@draw-max",price={50,80,130,180,240}},["shop_@max-hp"]={name="@max-hp",price={45,75,110,165,215}},["shop_@slash-num"]={name="@slash-num",price={30,50,80,125,170}},["shop_@shield-num"]={name="@shield-num",price={50,90,150,200,240}}}
--升级选项后其在商店的加成数值
-- local qy_itemsValueCfg = {["@slash-dmg"]={1,2,3,210,270},["@trick-dmg"]={40,60,110,150,200},["@draw-max"]={50,80,130,180,240},["@max-hp"]={45,75,110,165,215},["@slash-num"]={30,50,80,125,170},["@shield-num"]={50,90,150,200,240}}
--普元或者diy装备
local qy_shopItems = {["shop_red_spear"]=40,["shop_quenched_blade"]=50,["shop_poisonous_dagger"]=70,["shop_water_sword"]=45,["shop_thunder_blade"]=55,["shop_fm_jingang"]=50,["shop_sw_feijiang"]=55,["shop_xyd_xueyingdao"]=50}

local quUnion_getLogic = function()
  local quUnion_logic = GameLogic:subclass("quUnion_logic")

  function quUnion_logic:initialize(room)
    GameLogic.initialize(self, room)
    self.players_msg = {}
    room.settings.preferredLuckTime = 3
    self.role_table[8] = { "loyalist", "loyalist", "rebel", "rebel", "rebel", "loyalist", "loyalist", "rebel" }
  end

  -- function quUnion_logic:prepareForStart()
  --   local room = self.room
  --   local players = room.players

  --   self:addTriggerSkill(GameRule)
  --   for _, trig in ipairs(Fk.global_trigger) do
  --     if trig.name ~= "mobile_effect" then  --关闭手杀特效
  --       self:addTriggerSkill(trig)
  --     end
  --   end
  --   self.room:sendLog{ type = "$GameStart" }
  -- end

  function quUnion_logic:prepareDrawPile()
    local room = self.room
    --重新过滤卡组
    local filterCardIds = {}
    local lim_card = "peach"
    local lim_peachnum = 10
    local peachs = {}
    local allCardIds = Fk:getAllCardIds()
    for i = 1, #allCardIds do
      local id = allCardIds[i]
      local card = Fk:getCardById(id)
      if card then
        if card.is_derived or card.name == "crossbow" then
          table.insert(room.void, id)
          room:setCardArea(id, Card.Void, nil)
        else
          if table.contains(whilecards,card.package.name) then
            if card.name ~= lim_card then
              table.insert(filterCardIds,id)
            else
              if #peachs >= lim_peachnum then
                table.insert(room.void, id)
                room:setCardArea(id, Card.Void, nil)
              else
                table.insert(peachs, id)
                table.insert(filterCardIds,id)
              end
            end
          end
        end
      end
    end
    table.shuffle(filterCardIds)
    room.draw_pile = filterCardIds
    for _, id in ipairs(room.draw_pile) do
      room:setCardArea(id, Card.DrawPile, nil)
    end
  end

  function quUnion_logic:assignRoles()
    local room = self.room
    local n = #room.players
    local roles = self.role_table[n]
    roles = table.clone(roles)
    for i = 1, n do
      local p = room.players[i]
      if p.id > 0 and (i == 1 or i==5) then --关键位置和ai换位置
        local findrebot,indx
        for pos,pr in ipairs(room.players) do
          if pos ~= 1 and pos ~= 5 and pr.id < 0 then findrebot = pr indx = pos break end
        end
        if findrebot and indx then
          room.players[indx] = p
          room.players[i] = findrebot
        end
      end
    end
    local upitems = table.clone(qy_shopUpItems)
    local uplvcfg = {}
    for _,item in ipairs(upitems) do
      uplvcfg[item] = 1
    end
    for i = 1, n do
      local p = room.players[i]
      -- if p.id < 0 then
        -- p.ai = LangAI:new(p)
      -- end
      if i ~= 1 and i ~= 5 then
        self.players_msg[tostring(p.id)] = {exp={0,expcfg[2]},lv=1,mf=0,defeatnum=0,upitemscfg=table.clone(uplvcfg),damagenum=0}
      end
      p.role = roles[i]
      p.role_shown = true
      room:notifyProperty(p, p, "role")
      room:broadcastProperty(p, "role")
    end
  end

  function quUnion_logic:chooseGenerals()
    local room = self.room
    -- local generalNum = room.settings.preferredLuckTime
    local generalNum = 8
    room.current = room.players[1]
    local whilegens = table.random(GensLimts:getQyUnionGens(),56)
    self.all_selgens = table.clone(whilegens)
    table.shuffle(whilegens)
    local handleSelGen = function(who,g)
      room:setPlayerGeneral(who, g, true)
      room:askForChooseKingdom({who})
      room:broadcastProperty(who, "general")
      room:broadcastProperty(who, "kingdom")
    end
    for pos, pr in ipairs(room.players) do --先禁将
      if pos == 1 or pos == 5 then
        handleSelGen(pr,"l__defendcity")
      else
        room:askForChoice(pr, {"qy_newguide","prohi_gen"}, "qy_newguide", "qy_newguide",true)
        room:doBroadcastNotify("ShowToast", pr.seat.."号正在禁将")
        local sel_prohigen = room:askForGeneral(pr,table.random(whilegens,20), 1,true)
        table.removeOne(whilegens,sel_prohigen)
        room:doBroadcastNotify("ShowToast", Fk:translate(sel_prohigen).."被禁了")
        room:sendLog{type = "#prohibit_gen",arg = pos,arg2 = sel_prohigen}
        -- room:doBroadcastNotify("ShowToast", Fk:translate(pr.general).."正在选将")se
        local selgs = table.random(whilegens,8)
        if quUnion_test and pr.id > 0 then
          table.insertIfNeed(selgs,"mouxusheng")
        end
        local sel_gens = room:askForGeneral(pr, selgs, 1,true)
        handleSelGen(pr,sel_gens)
        table.removeOne(whilegens,sel_gens)
      end
    end
  end
  return quUnion_logic
end

local getShopEquips = function(equip,from)
  local room = from.room
  local geteid
  local name = equip
  for _, id in ipairs(room.void) do
    local card = Fk:getCardById(id, true)
    if card.trueName == name then
      geteid = id
      break
    end
  end
  if geteid then
    room:obtainCard(from,geteid,true,fk.ReasonJustMove)
    room:doBroadcastNotify("ShowToast", Fk:translate(from.general) .."购买了"..Fk:translate(equip))
  else
    room:doBroadcastNotify("ShowToast", "买不到？似乎没开【浪】扩展包或者该装备不在空白卡组")
  end
end

local enterShop 
enterShop = function(player)
  local room = player.room
  local playermsg = room.logic.players_msg[tostring(player.id)]
  local allitems = {}
  local lv = playermsg.lv
  local upitemscfg = playermsg.upitemscfg
  for item,cfg in pairs(qy_itemsGoldCfg) do
    if player:getMark(cfg.name) < 5 then
      local cfgprice = cfg.price[upitemscfg["up_"..cfg.name]]
      table.insert(allitems,item..":::"..upitemscfg["up_"..cfg.name]..":"..cfgprice)
    end
  end
  if #room.void > 0 then
    for _,der_eqid in ipairs(room.void) do
      local card = Fk:getCardById(der_eqid)
      local shopname = "shop_"..card.name
      if card.is_derived and qy_shopItems[shopname] then
        table.insert(allitems,shopname..":::"..qy_shopItems[shopname])
      end
    end
  end
  -- table.insert(allitems,"recoverall")
  table.insert(allitems,"Exist")
  local chs = room:askForChoice(player, allitems, "#puyuanShop-choice", "#puyuanShop-choice",false)
  if chs == "Exist" then return end
  local pricepos,len = string.find(chs,":%d:") 
  local num,handlechs
  if not pricepos then 
    local newpos = string.find(chs,"%d")  
    num = tonumber(string.sub(chs,newpos))
    handlechs = string.sub(chs,6,newpos-4) --截取标记
  else
    num = tonumber(string.sub(chs,len+1))
    handlechs = string.sub(chs,6,pricepos-3) --截取标记
  end
  -- p(num)
  -- p(handlechs)
  -- dbg()
  if not num then return end
  local gold = player:getMark("@gold_num")
  if gold - num >= 0 then
    room:setPlayerMark(player,"@gold_num",gold - num)
    local v = upitemscfg["up_"..handlechs]
    if v then
      if handlechs == "@max-hp" then
        room:changeMaxHp(player, v)
        room:recover({who = player,num = v,recoverBy = player,skillName = "qy_tianfu"})
      end
      if handlechs == "@shield-num" then
        if v > player.shield then
          room:changeShield(player,v)
        end
      end
      room:addPlayerMark(player,handlechs,v)
      -- playermsg.upitemscfg["up_"..handlechs] = 1 --买完标记重置为1
    else
      getShopEquips(handlechs,player)
    end
  else
    room:doBroadcastNotify("ShowToast", Fk:translate(player.general).."买不起"..Fk:translate(handlechs))
    return enterShop(player)
  end
end
--天赋
local qy_tianfu = fk.CreateTriggerSkill{
  name = "qy_tianfu",
  frequency = Skill.Compulsory,
  anim_type = "offensive",
  events = {fk.TargetSpecifying,fk.DrawNCards,fk.TurnStart},
  can_trigger = function(self, event, target, player, data)
    if not player:hasSkill(self.name) then return end
    if event == fk.TargetSpecifying then
      if player == target and data.card then
        if data.card.trueName == "slash" and player:getMark("@slash-dmg") > 0 then
          self.cost_data = "@slash-dmg"
          return true
        end
        if data.card.type == Card.TypeTrick and data.card.is_damage_card and player:getMark("@trick-dmg") > 0 then
          self.cost_data = "@trick-dmg"
          return true
        end
      end
    elseif event == fk.DrawNCards then
      return player == target and player:getMark("@draw-max") > 0 
    elseif event == fk.TurnStart then
      return player == target and player:getMark("@shield-num") > 0 
    end
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    if event == fk.TargetSpecifying then
      -- data.damage = data.damage + player:getMark(self.cost_data)
      data.additionalDamage = (data.additionalDamage or 0) + player:getMark(self.cost_data)
      self.cost_data = nil
    elseif event == fk.DrawNCards then
      data.n = data.n + player:getMark("@draw-max")
    elseif event == fk.TurnStart then
      local shield = player.shield
      local mark = player:getMark("@shield-num")
      local reduce = mark - shield
      if reduce > 0 then room:changeShield(player,reduce) end
    end
  end,
}
local qy_maxhands = fk.CreateMaxCardsSkill{
  name = "#qy_maxhands",
  correct_func = function (self, player)
    if player:hasSkill("qy_tianfu") and player:getMark("@draw-max") > 0 then
      return player:getMark("@draw-max")
    end
  end,
}
local qy_slashnum = fk.CreateTargetModSkill{
  name = "#qy_slashnum",
  residue_func = function(self, player, skill, scope)
    if player:hasSkill("qy_tianfu") and player:getMark("@slash-num") > 0 and skill.trueName == "slash_skill" and scope == Player.HistoryPhase then
      return player:getMark("@slash-num")
    end
  end,
}
qy_tianfu:addRelatedSkill(qy_maxhands)
qy_tianfu:addRelatedSkill(qy_slashnum)
Fk:addSkill(qy_tianfu)

local updateExp
updateExp = function(from,damage)
  local room = from.room
  local frommsg = room.logic.players_msg[tostring(from.id)]
  local curexp,maxexp = frommsg.exp[1],frommsg.exp[2]
  if curexp + damage >= maxexp then
    frommsg.lv = frommsg.lv + 1
    frommsg.exp[2] = expcfg[frommsg.lv + 1]
    if not frommsg.exp[2] then --最大等级没配置了
      -- frommsg.lv = frommsg.lv - 1
      frommsg.exp[2] = expcfg[frommsg.lv]
      frommsg.exp[1] = 0
      room:setPlayerMark(from,"@qy_exp",frommsg.lv.." Exp:"..frommsg.exp[1].."/"..frommsg.exp[2])
    end
    frommsg.exp[1] = curexp + damage - maxexp
    local upitems = {}
    for _,item in ipairs(qy_shopUpItems) do
      -- local attri_value = from:getMark(string.gsub(item,"up_","@"))
      local itemlv = frommsg.upitemscfg[item]
      if itemlv < 4 and from:getMark(string.gsub(item,"up_","@")) < 5 then
        table.insert(upitems,item..":::"..itemlv)
      end
    end
    if #upitems == 0 then return end
    local chs = room:askForChoice(from, upitems, "#uplevel", "#uplevel_promt",false) --升级后可以升级商店一些物品等级
    local pos = string.find(chs,":")
    local handlchs = string.sub(chs,1,pos-1)
    frommsg.upitemscfg[handlchs] = frommsg.upitemscfg[handlchs] + 1
    room:doBroadcastNotify("ShowToast", Fk:translate(from.general).."在商品购买的某件物品升级了")
    if frommsg.exp[1] < frommsg.exp[2] then --升等级
      room:setPlayerMark(from,"@qy_exp",frommsg.lv.." Exp:"..frommsg.exp[1].."/"..frommsg.exp[2])
    else --经验过多连升就递归
      return updateExp(from,frommsg.exp[1])
    end
  else
    frommsg.exp[1] = curexp + damage
    room:setPlayerMark(from,"@qy_exp",frommsg.lv.." Exp:"..frommsg.exp[1].."/"..frommsg.exp[2])
  end
end

--模式
local quUnion_rule = fk.CreateTriggerSkill{
  name = "#quUnion_rule",
  priority = 0.001,
  refresh_events = {fk.Damaged,fk.GameStart,fk.RoundStart,fk.Death,fk.GameOverJudge,fk.TurnEnd},
  can_refresh = function(self, event, target, player, data)
    if event == fk.GameStart then
      return player == target and player.seat == 1
    elseif event == fk.RoundStart then
      return player == target and player.seat == 1 and player.room:getTag("RoundCount") > 1
      -- return player == target and player.seat == 1
    elseif event == fk.Damaged then
      return target == player and data.from and not data.from.dead and not GensLimts:isSameCamp(player,data.from) 
    elseif event == fk.TurnEnd then
      return player == target
    elseif event == fk.Death then
      return player == target
    elseif event == fk.GameOverJudge then
      return player == target
    end
  end,
  on_refresh = function(self, event, target, player, data)
    local room = player.room
    if event == fk.GameStart then
      local all_selgens = room.logic.all_selgens
      local humans = {}
      for _,pr in ipairs(room.players) do
        if pr.id > 0 then table.insert(humans,pr) end
        if pr.general ~= "l__defendcity" then
          room:handleAddLoseSkills(pr, "qy_tianfu", nil, false)
          room:setPlayerMark(pr,"@gold_num",initgold) 
          updateExp(pr,0)
        end
      end
      humans = table.map(humans,function(pr) return pr.general end)
      if not quUnion_test and (not GensLimts:gensIsInConf(humans,all_selgens) or not all_selgens) then 
        room:doBroadcastNotify("ShowToast", "选将不在原选将框内或不符合游戏规则，游戏结束")
        room:gameOver("lord")
        return
      end
      room:setTag("SkipGameRule", true)
      room:setTag("SkipNormalDeathProcess", true)
      room:setTag(self.name, true)
    elseif event == fk.RoundStart then
      local r = room:getTag("RoundCount")
      for _,pr in ipairs(room.alive_players) do
        if pr.general ~= "l__defendcity" then
          enterShop(pr)
        end
        if pr.general == "l__defendcity" and r % 2 == 0 then
          room:removePlayerMark(pr,"@gc_chengfang",1)
        end
      end
    elseif event == fk.Damaged then
      local damage = data.damage
      local from = data.from
      if from.general ~= "l__defendcity" and player.general ~= "l__defendcity" then
        local playermsg = room.logic.players_msg
        local damagemsg = playermsg[tostring(player.id)] --根据敌人等级取伤害和等级最小及 
        local frommsg = playermsg[tostring(from.id)]
        if frommsg.lv > damagemsg.lv then
          if room.current.id == from.id then
            frommsg.damagenum = frommsg.damagenum + 1
          end
          updateExp(from,math.min(damagemsg.lv,damage))
        else
          if room.current.id == from.id then
            frommsg.damagenum = frommsg.damagenum + damage
          end
          updateExp(from,damage)
        end
      end
    elseif event == fk.TurnEnd then
      local r = room:getTag("RoundCount")
      if not player.dead and player.general ~= "l__defendcity" then
        local damagenum = room.logic.players_msg[tostring(player.id)].damagenum
        room:addPlayerMark(player,"@gold_num",math.floor(math.random(1,3)+0.5+damagenum*math.random(2,4)))
        updateExp(player,1+math.floor(r/4))
      end
      for _,pr in ipairs(room.players) do
        local zb_mark = pr:getMark("@zhengbei")
        if pr.general ~= "l__defendcity"  then
          if pr.dead and zb_mark > 0 then
            room:removePlayerMark(pr,"@zhengbei",1)
            if zb_mark-1<=0 then
              room:revivePlayer(pr, false) 
              local cal_r = r > 12 and 12 or r
              room:drawCards(pr, 4+math.floor(cal_r/drawbyground),self.name)
            end
          end
        end
      end
    elseif event == fk.Death then
      room:setTag("SkipGameRule", true)
      local playermsg = room.logic.players_msg
      local from = data.damage and data.damage.from
      local mf = player:getMark("@qy_mf")
      if mf > 0 then
        local msg = playermsg[tostring(player.id)]
        msg.defeatnum = 0
      end
      player:setCardUseHistory("")
      player:throwAllCards()
      -- player:throwAllMarks()
      for name, _ in pairs(player.mark) do
        if not table.contains(player_allmarks,name) then
          room:setPlayerMark(player, name, 0)
        end  
      end
      player:clearPiles()
      player:reset()
      room:setPlayerMark(player,"@zhengbei",2+math.floor(room:getTag("RoundCount")/2)) --死亡角色获得整备标记
      if from and from.role ~= player.role and from.general ~= "l__defendcity" then
        room:addPlayerMark(from,"@gold_num",defeatgold + mf) --击杀者获得击杀金币
        local msg = playermsg[tostring(from.id)]
        msg.defeatnum = msg.defeatnum + 1
        if msg.defeatnum > 1 then
          room:addPlayerMark(from,"@qy_mf",math.floor(math.random(15+msg.lv*2,25+msg.lv*2)+0.5)) --击杀者标记赏金
        end
      end
    elseif event == fk.GameOverJudge then
      room:setTag("SkipGameRule", true)
    end
  end,
}
Fk:addSkill(quUnion_rule)
local qyUnion = fk.CreateGameMode{
  name = "qyUnion",
  minPlayer = 8,
  maxPlayer = 8,
  whitelist = table.clone(whilecards),
  rule = quUnion_rule,
  logic = quUnion_getLogic,
  surrender_func = function(self, playedTime)
    local surrenderJudge = { { text = "time limitation: 10s", passed = playedTime >= 10 } }
    if Self.role ~= "lord" then
      table.insert(surrenderJudge, { text = "only you alive", passed = #Fk:currentRoom().alive_players <= 2 })
    end
    return surrenderJudge
  end,
}

Fk:loadTranslationTable{
  ["qyUnion"] = "双城之战",
  ["quUnion_rule"] = "双城之战",
  ["@qy_mf"] = "赏金:",
  ["@qy_exp"] = "Lv:",

  ["qy_tianfu"] = "天赋",
  [":qy_tianfu"] = "锁定技。以下情形达成效果+获得对应标记值：1.使用【杀】造成伤害。2.出牌阶段【杀】次数。3.摸牌阶段摸牌数与手牌上限。4.体力上限。5.锦囊造成伤害。6.每回合开始获得护甲",
  ["#qy_maxhands"] = "天赋",

  ["shop_red_spear"] = "红缎枪(%arg金币)",
  ["shop_quenched_blade"] = "烈淬刀(%arg金币)",
  ["shop_poisonous_dagger"] = "混毒弯匕(%arg金币)",
  ["shop_water_sword"] = "水波剑(%arg金币)",
  ["shop_thunder_blade"] = "天雷刃(%arg金币)",
  ["shop_fm_jingang"] = "伏魔金刚杵(%arg金币)",
  ["shop_sw_feijiang"] = "神威飞将剑(%arg金币)",
  ["shop_xyd_xueyingdao"] = "血影刀(%arg金币)",

  ["up_@slash-dmg"] = "杀伤+%arg",
  ["up_@trick-dmg"] = "锦伤+%arg",
  ["up_@draw-max"] = "摸上+%arg",
  ["up_@max-hp"] = "体力+%arg",
  ["up_@slash-num"] = "杀数+%arg",
  ["up_@shield-num"] = "护甲+%arg",

  ["shop_@slash-dmg"] = "杀伤+%arg(%arg2金币)",
  ["shop_@trick-dmg"] = "锦伤+%arg(%arg2金币)",
  ["shop_@draw-max"] = "摸上+%arg(%arg2金币)",
  ["shop_@max-hp"] = "体力+%arg(%arg2金币)",
  ["shop_@slash-num"] = "杀数+%arg(%arg2金币)",
  ["shop_@shield-num"] = "护甲+%arg(%arg2金币)",

  ["@slash-dmg"] = "杀伤+",
  ["@trick-dmg"] = "锦伤+",
  ["@draw-max"] = "摸上+",
  ["@max-hp"] = "体力+",
  ["@slash-num"] = "杀数+",
  ["@shield-num"] = "护甲+",

  ["qy_newguide"] = "新手引导",
  [":qy_newguide"] = "1.胜利条件：一方主城进入濒死则另一方胜利。<br/>2.每轮开始（第1轮除外），每个玩家依次进入商店可以用金币购买【天赋标记】、【稀有衍生装备】。当玩家等级Lv升级后可以升级商店售卖的天赋标记属性。<br/>3.死亡可以重新复活。需要“整备”标记为0即可摸等量牌复活",
  ["#uplevel"] = "升级商店物品选择",
  ["#uplevel_promt"] = "升级商品售卖的天赋属性(不是获得标记)",
  ["prohi_gen"] = "准备禁将",
  [":prohi_gen"] = "先禁将后选将",
  ["#prohibit_gen"] = "%arg号禁将，%arg2被禁止",
  ["time limitation: 10s"] = "游戏时长达到10秒",
  ["only you alive"] = "仅剩两人存活",

  [":qyUnion"] = desc_quUnion,
}

return qyUnion
